package br.com.sgc.session;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import br.com.sgc.dao.FuncionarioDao;
import br.com.sgc.dao.SegurancaDao;
import br.com.sgc.entities.seguranca.Usuario;
import br.com.sgc.exception.ValidacaoException;

import com.encripta.EncriptaSenha;

@Stateless
public class SegurancaSession extends GenericSession<Usuario>{
	
	private static final long serialVersionUID = -2362504705701487686L;

	@EJB
	private SegurancaDao dao;
	
	@EJB
	private FuncionarioDao funcionarioDao;
	
	public Usuario loginUsuario(Usuario usuario) throws ValidacaoException{
		Usuario usuarioLogado = dao.login(usuario);
		if(usuarioLogado != null && usuarioLogado.getSenha().equals(EncriptaSenha.criptografa(usuario.getSenha()))){
			
			usuarioLogado = (Usuario) initializeDependecies(usuarioLogado);
			
		} else {
			throw new ValidacaoException("Usuário ou Senha inválido!!!");
		}
		
		if(usuarioLogado.getPerfilUsuario() == null && !usuarioLogado.isSuperUsuario()){
			throw new ValidacaoException("Usuário não possui nenhuma permissão ao Sistema.");
		}
		
		return usuarioLogado;
	}
	
	public void validateLogin(Usuario t) throws ValidacaoException{
		dao.findLoginUser(t);
	}
	
	@Override
	protected void validar(Usuario t) throws ValidacaoException {
		if(t.getPerfilUsuario().getId() == 0){
			throw new ValidacaoException("� necess�rio selecionar um perfil para o usu�rio");
		}
	}
	
}
